基于鲁棒弹性变形的视差容忍图像拼接 - Python实现
介绍
本项目实现了J. Li等人在IEEE Transactions on Multimedia上发表的《视差容忍图像拼接基于鲁棒弹性变形》论文中的算法。该算法特别适用于处理具有视差的图像拼接问题,通过引入弹性变形技术,提高了拼接图像的质量和自然度。论文详细信息如下:
J. Li, Z. Wang, S. Lai, Y. Zhai and M. Zhang, “Parallax-Tolerant Image Stitching Based on Robust Elastic Warping,” in IEEE Transactions on Multimedia, vol. 20, no. 7, pp. 1672-1687, July 2018, doi: 10.1109/TMM.2017.2777461.
项目代码已托管至GitHub,欢迎Star支持。
代码实现
以下是主程序文件 main.py
的代码示例:
import cv2 as cv
from load_data import load_data
from comp_KR import comp_KR
from mosaic_global import mosaic_global
from mosaic_local_ori import mosaic_local_ori
import matplotlib.pyplot as plt
data_path = 'images/DHW-temple/'
imfile1 = data_path + '4.jpg'
imfile2 = data_path + '5.jpg'
im1 = cv.imread(imfile1)
im2 = cv.imread(imfile2)
X1, X2 = load_data(im1, im2)
print("Number of matches: ", X1.shape[1])
H, X1_ok, X2_ok = comp_KR(im1, im2, X1, X2)
print("H =\n", H)
print("H normalize =\n", H / H[2, 2])
mosaic = mosaic_global(im1, im2, H)
cv.imwrite(data_path + 'mosaic_global.jpg', mosaic)
cv.imshow("mosaic_global", mosaic)
cv.waitKey(1)
mosaic = mosaic_local_ori(im1, im2, H, X1_ok, X2_ok)
cv.imwrite(data_path + 'mosaic_REW.jpg', mosaic)
cv.imshow("mosaic_REW", mosaic)
cv.waitKey(0)
其中,load_data.py
文件用于提取和匹配图像特征点,comp_KR.py
文件用于计算全局单应性矩阵,mosaic_global.py
和 mosaic_local_ori.py
分别用于全局和局部对齐的图像拼接。
运行结果展示
全局拼接结果 | 弹性局部对齐结果 |
全局拼接结果 | 弹性局部对齐结果 |
全局拼接结果 | 弹性局部对齐结果 |
全局拼接结果 | 弹性局部对齐结果 |